home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 41 / Amiga Format CD41 (1999-06)(Future Publishing)(GB)[!][issue 1999-07].iso / -seriously_amiga- / graphics / jpegtool / jpegtool.rexx < prev   
OS/2 REXX Batch file  |  1999-04-28  |  20KB  |  686 lines

  1. /*
  2.   $VER: JpegToolGUI.rexx 1.2 (17.4.99) Nils Görs
  3. */
  4.  
  5.  
  6. /* Informationen über das Ausgabefenster      */
  7. LeftBorder   = 10    /*Abstand linker Rand    */
  8. TopBorder    = 300   /*Abstand vom oberen Rand*/
  9. OutPutWidth  = 640   /*Breite des Fensters    */
  10. OutPutHeight = 150   /*Höhe des Fensters      */
  11.  
  12.  
  13. StandardPath = "ram:"
  14. PrefsFile = "Sys:Prefs/Presets/jpegtool.prefs"
  15.  
  16. OPTIONS RESULTS
  17.  
  18. PARSE ARG PubScreen
  19.  
  20. IF PubScreen == "?" THEN DO
  21.  OPTIONS PROMPT "PUBSCREEN/K: "
  22.  PARSE PULL PubScreen
  23. END
  24.  
  25.  
  26. CALL _InitAll
  27.  
  28. /*
  29. ** Beschreibung der Applikation
  30. */
  31. appname     = 'JpegToolGUI'
  32. applongname = 'JpegTool - ©99 by Nils Görs'
  33. appinfo     = 'graphical user interface for JpegTool'
  34. appversion  = '1.2'
  35. apprelease  = '2'
  36. appdate     = '17.4.99'
  37.  
  38. Holder = Prefs.3
  39. IF Prefs.3 = 4 THEN Holder = Prefs.3 * 2
  40. IF Prefs.3 = 3 THEN Holder = Prefs.3 + 1
  41.  
  42. _maintags:
  43. windowtags = WindowID(1),
  44.              PubScreenName(PubScreen),
  45.              WindowBackfillFB,
  46.              WindowTitle(appname appversion),
  47.              QuickHelpOn(HelpBool),
  48.              BeginMenu('Project'),
  49.          MenuItemC('H_QuickHelp',100),
  50.              MenuItem('?_About',101) ItemBarlabel,
  51.              MenuItem('S_Save',103) ItemBarlabel,
  52.              MenuItem('Q_Quit',102),
  53.          BeginMenu('Edit'),
  54.          MenuItem('D_Reset to Defaults',201),
  55.          MenuItem('L_Last Saved',202),
  56.            'HorizGroupA Space VertGroupA Space',
  57.                'LineArray',
  58.             'BeginLine',
  59.                 Text3('_From: ') 'TRAT_ID 1',
  60.                 StringGadget('',1) 'TRAT_Value 255',
  61.                 QuickHelp("specifies the images to convert"),
  62.                 GetFileButton(2),
  63.                 QuickHelp("select a file."),
  64.                 GetDrawerButton(21),
  65.                 QuickHelp("select a directory (including subdirs!) to convert."||NL||"To convert a directory you don't need to give a"||NL||"pattern anymore. A new directory in the destination"||NL||"drawer _won't_ be created!"),
  66.             'EndLine',
  67.         'SpaceS',
  68.             'BeginLine',
  69.                 Text3('_To: ') 'TRAT_ID 3',
  70.                 StringGadget('',3) 'TRAT_Value 255',
  71.                 QuickHelp("specifies the destination file"),
  72.                 GetFileButton(4),
  73.                  GetEntryButton(41),
  74.                  QuickHelp('List of all supported variables/placeholders.'),
  75.             'EndLine',
  76.         'SpaceS',
  77.             'BeginLine',
  78.                 Text3('_Destdatatype: ') 'TRAT_ID 5',
  79.                 StringGadget('',5) 'TRAT_Value 255',
  80.                 QuickHelp("Tells the program to create a datatypes object"NL"from a jpeg stream. To create an ilbm picture specify"NL"picture.datatype. This option requires picture datatype v43"NL"and datatypes.library v45! And, of course, the specified"NL"subclass of picturedt must be v43 compatible and provide an encoder."),
  81.                 GetEntryButton(6),
  82.             'EndLine',
  83.         'Space',
  84.             'BeginLine',
  85.                 Text3("_Quality") 'TRAT_ID 7',
  86.                 SliderGadget(1,100,Prefs.1,7),
  87.                 QuickHelp("quality of the jpeg stream to create."),
  88.                 'Space',
  89.                 Text3(Prefs.1'%') 'TRAT_MinWidth 4 TRAT_ID 77',
  90.             'EndLine',
  91.         'SpaceS',
  92.             'BeginLine',
  93.                 Text3("_Smoothing") 'TRAT_ID 8',
  94.                 SliderGadget(0,100,Prefs.2,8),
  95.                 QuickHelp("smoothing factor of the jpeg stream to create (0 = no smoothing)"),
  96.                 'Space',
  97.                 Text3(Prefs.2'%') 'TRAT_MinWidth 3 TRAT_ID 88',
  98.             'EndLine',
  99.         'SpaceS',
  100.             'BeginLine',
  101.                 Text3("Scalede_nom") 'TRAT_ID 9',
  102.                 SliderGadget(1,4,Prefs.3,9),
  103.                 QuickHelp("scaling denominator when decompressing a jpeg image."NL"Denominators supported are 1 (default), 2, 4 and 8."NL"Eg. if you want to have an image that is halve of"NL"the size of the original one specify 2."),
  104.                 'Space',
  105.                 Text3('1:'Holder) 'TRAT_MinWidth 3 TRAT_ID 99',
  106.             'EndLine',
  107.         'SpaceS',
  108.             'BeginLine',
  109.                 Text3("Scalenum") 'TRAT_ID 13',
  110.                 SliderGadget(1,1,1,13),
  111.                 QuickHelp("scaling numerator when decompressing a jpeg image."NL"The jpeg code only supports a value of 1 (default) currently."),
  112.                 'Space',
  113.                 Text3('1'),
  114.             'EndLine',
  115.         'Space',
  116.         'EndArray',
  117. ,
  118. NamedFrameBox('Options'),
  119.         'LineArray',
  120.             'BeginLine',
  121.                 'SpaceB',
  122.                     Text3("D_ctmethod: ") 'TRAT_ID 14',
  123.                     CycleGadget(DCTMETHOD,Prefs.4-1,14),
  124.                     QuickHelp("allows to specify the dct method used for de-/encoding."NL"ISLOW: integer, slow, more accurate (default)."NL"IFAST: integer, fast, less accurate."NL"FLOAT: float, fast on fast machines, most accurate."),
  125.                 'SpaceB',
  126.                     Text3("_Blocksmoothing: ") 'TRAT_ID 10',
  127.                     CheckBox(10) 'TRAT_Value' Prefs.5,
  128.                     QuickHelp("do block smoothing when decompressing."),
  129.                 'SpaceB',
  130.                     Text3("_Progressive: ") 'TRAT_ID 11',
  131.                     CheckBox(11) 'TRAT_Value' Prefs.6,
  132.                     QuickHelp("create progressive jpeg."),
  133.                 'SpaceB',
  134.             'EndLine',
  135.             'Space',
  136.             'BeginLine',
  137.                 'SpaceB',
  138.                     Text3("Qui_et: ") 'TRAT_ID 12',
  139.                     CheckBox(12) 'TRAT_Value' Prefs.9,
  140.                     QuickHelp("suppresses any message except error messages."),
  141.                 'SpaceB',
  142.                     Text3("_Grayscale: ") 'TRAT_ID 15',
  143.                     CheckBox(15) 'TRAT_Value' Prefs.7,
  144.                     QuickHelp("create grayscale image."),
  145.                 'SpaceB',
  146.                     Text3("F_orce: ") 'TRAT_ID 17',
  147.                     CheckBox(17) 'TRAT_Value' Prefs.8,
  148.                     QuickHelp("overwrite existing file(s)."),
  149.                 'SpaceB',
  150.             'EndLine',
  151.         'Space',
  152.         'EndArray',
  153.         'Space',
  154.         Button("Con_vert",16),
  155.              'Space EndGroup Space EndGroup EndProject'
  156. /*
  157. ** Unterbrechungssignale
  158. */
  159.  
  160. SIGNAL ON break_c
  161. SIGNAL ON failure
  162. SIGNAL ON halt
  163. SIGNAL ON ioerr
  164. SIGNAL ON syntax
  165.  
  166. app = TR_CREATEAPP('TRCA_Name'     '"'appname'"',
  167.                    'TRCA_LongName' '"'applongname'"',
  168.                    'TRCA_Info'     '"'appinfo'"',
  169.                    'TRCA_Version'  '"'appversion'"',
  170.                    'TRCA_Release'  '"'apprelease'"',
  171.                    'TRCA_Date'     '"'appdate'"',
  172.                    'TAG_END')
  173.  
  174. IF app ~= '00000000'x THEN DO
  175.    window = TR_OPENPROJECT(app,windowtags)
  176.    WindowProject=C2D(window) /* zum Locken des Fensters bei About */
  177.    IF window ~= '00000000'x THEN DO
  178.       nummer = 0
  179.  
  180.       DO WHILE nummer = 0
  181.          CALL TR_WAIT(app,'')
  182.  
  183.          DO WHILE TR_HANDLEMSG(app,'event')
  184.  
  185. /******************
  186. *** CLOSEGADGET ***
  187. *******************/
  188.             IF event.trm_class = 'TRMS_CLOSEWINDOW' THEN nummer = -1
  189.  
  190.  
  191.     IF event.trm_class = 'TRMS_ACTION' THEN DO
  192.         SELECT
  193.             WHEN event.trm_id = 16 THEN CALL _Convert
  194.  
  195.             WHEN event.trm_id = 21 THEN DO
  196.                 IF _DirRequest(InDir "Select source path") = 1 THEN DO
  197.                 CALL TR_SETATTRIBUTE(window,1,'TROB_String',Dirname.1)
  198.                 END
  199.             END
  200.  
  201.             WHEN event.trm_id = 2 THEN DO
  202.             infile = TR_GETATTRIBUTE(window,1,'TROB_String')
  203.             IF infile = " " THEN infile = "INFILE"
  204.                 IF _FileRequest(infile "Select source file") = 1 THEN DO
  205.                     Infile = filename.1
  206.                     CALL TR_SETATTRIBUTE(window,1,'TROB_String',Infile)
  207.                 END
  208.             END
  209.             WHEN event.trm_id = 4 THEN DO
  210.             outfile = TR_GETATTRIBUTE(window,3,'TROB_String')
  211.             IF outfile = " " THEN outfile = "OUTFILE"
  212.                 IF _FileRequest(outfile "Select destination file") = 1 THEN DO
  213.                     Outfile = filename.1
  214.                     CALL TR_SETATTRIBUTE(window,3,'TROB_String',Outfile)
  215.                 END
  216.             END
  217.             WHEN event.trm_id = 41 THEN CALL _FileTypes
  218.  
  219.             WHEN event.trm_id = 6 THEN DO
  220.                 NewDatatype = selectdatatypes()
  221.                 IF newdatatype ~= 0 THEN DO
  222.                     laenge=LENGTH(newDatatype)
  223.                     NewDataType=LEFT(NewDataType,Laenge-9)
  224.                     CALL TR_SETATTRIBUTE(window,5,'TROB_String',NewDataType)
  225.                 END
  226.             END
  227.  
  228.             WHEN event.trm_id  = 101 THEN CALL _About
  229.             WHEN event.trm_id  = 102 THEN DO
  230.                         Quit=TR_EasyRequest(app,"Really Quit?",,
  231.                                             "Yes|No","TREZ_Title Quit TREZ_LockProject" WindowProject)
  232.                         IF Quit == 1 THEN nummer=1
  233.                     END
  234.             WHEN event.trm_id = 103 THEN CALL _SavePrefs
  235.             WHEN event.trm_id = 201 THEN CALL _Reset2Defaults
  236.             WHEN event.trm_id = 202 THEN CALL _LastSaved
  237.         OTHERWISE
  238.             NOP
  239.         END
  240.     END
  241.  
  242.     IF event.trm_class = 'TRMS_NEWVALUE' THEN DO
  243.         SELECT
  244.             WHEN event.trm_id = 7 THEN CALL TR_SETATTRIBUTE(window,77,'TRAT_Text',event.trm_data||"%")
  245.             WHEN event.trm_id = 8 THEN CALL TR_SETATTRIBUTE(window,88,'TRAT_Text',event.trm_data||"%")
  246.  
  247.             WHEN event.trm_id = 9 THEN DO
  248.                 IF event.trm_data = 4 THEN event.trm_data = event.trm_data * 2
  249.                 IF event.trm_data = 3 THEN event.trm_data = event.trm_data + 1
  250.                 CALL TR_SETATTRIBUTE(window,99,'TRAT_Text',"1:"||event.trm_data)
  251.             END
  252.             WHEN event.trm_id = 100 THEN DO
  253.                 HelpBool = TR_GETATTRIBUTE(window,100,'TRAT_VALUE')
  254.                 CALL TR_SETATTRIBUTE(window,0,'TRWI_QuickHelp',HelpBool)
  255.             END
  256.         OTHERWISE
  257.             NOP
  258.         END
  259.     END
  260. /* ENDE */
  261.          END
  262.       END
  263.       CALL TR_CLOSEPROJECT(window)
  264.    END
  265.    CALL TR_DELETEAPP(app)
  266. END
  267. EXIT(0)
  268.  
  269. _DirRequest:
  270. PARSE ARG DirPath Title
  271.  
  272. IF Dirpath = "" | Dirpath == "INDIR" | Dirpath = "OUTDIR" THEN Dirpath = standardpath
  273.  
  274.  
  275.             bool = ASL_RequestFile(window,DirName,,
  276.                 "ASLFR_PubScreenName" PubScreen,
  277.                 "ASLFR_InitialDrawer" DirPath,
  278.                 "ASLFR_TitleText" '"'||Title||'"',
  279.                 "ASLFR_DrawersOnly" TRUE)
  280. Args = "ALL"
  281. RETURN(bool)
  282.  
  283. _FileRequest:
  284. PARSE ARG CommandPath title
  285.  
  286. IF commandpath == "INFILE" | commandpath == "OUTFILE" | commandpath = "" THEN commandpath = standardpath
  287.  
  288.     CommandPath = RXTR_PATHPART(CommandPath)
  289.     IF CommandPath = "" THEN commandpath = standardpath
  290.  
  291.             bool = ASL_RequestFile(window,filename,,
  292.                 "ASLFR_PubScreenName" PubScreen,
  293.                 "ASLFR_InitialPattern" PatternList,
  294.                 "ASLFR_DoPatterns" 1,
  295.                 "ASLFR_InitialDrawer" CommandPath,
  296.                 "ASLFR_TitleText" '"'||Title||'"')
  297. RETURN(bool)
  298.  
  299.  
  300. _Convert:
  301.     InFile = TR_GETATTRIBUTE(window,1,'TROB_String')
  302.     OutFile = TR_GETATTRIBUTE(window,3,'TROB_String')
  303.     IF OutFile = "" | InFile = "" THEN RETURN
  304.  
  305.     DestDataType = TR_GETATTRIBUTE(window,5,'TROB_String')
  306.     IF DestDataType ~= "" THEN Args = "DTN="||Destdatatype
  307.  
  308.     CALL _GetValues
  309.  
  310.     IF Prefs.1 ~= 75 THEN Args = Args "Q="||Prefs.1        /* Quality */
  311.  
  312.     IF Prefs.2 ~= 0 THEN Args = Args "S="||Prefs.2        /* Smoothing */
  313.  
  314.     IF Prefs.3 ~= 1 THEN DO
  315.         IF Prefs.3 = 4 THEN Prefs.3 = Prefs.3 * 2
  316.         IF Prefs.3 = 3 THEN Prefs.3 = Prefs.3 + 1
  317.         Args = Args "SD="||Prefs.3        /* Scale */
  318.     END
  319.  
  320.     IF Prefs.4 ~= 1 THEN DO
  321.         wert = Prefs.4
  322.         Args = Args "DCT="||DCTMETHOD.wert        /* Methode */
  323.     END
  324.  
  325.     IF Prefs.5 = 1 THEN Args = Args "BS"            /* Block */
  326.  
  327.     IF Prefs.6 = 1 THEN Args = Args "P"            /* Progressive */
  328.  
  329.     IF Prefs.7 = 1 THEN Args = Args "GS"            /* GrayScale */
  330.     
  331.     IF Prefs.8 = 1 THEN Args = Args "FORCE"            /* Force */
  332.  
  333.     IF Prefs.9 = 1 THEN Args = Args "QUIET"            /* Quiet */
  334.  
  335.       CALL TR_LOCKPROJECT(window)
  336.     IF Quiet = 1 THEN ADDRESS COMMAND "jpegtool FROM="||InFile "TO="||OutFile Args
  337.     ELSE ADDRESS COMMAND "jpegtool FROM="||InFile "TO="||OutFile Args '<>CON:'LeftBorder'/'TopBorder'/'OutPutWidth'/'OutPutHeight'/converting.../SCREEN' PubScreen'/AUTO/CLOSE'
  338.       CALL TR_UNLOCKPROJECT(window)
  339. Args = ""
  340.     RETURN
  341.  
  342. /*
  343. *** Einstellungen speichern.
  344. */
  345. _SavePrefs:
  346.       CALL TR_LOCKPROJECT(window)
  347.     CALL _GetValues
  348.     IF RXTR_WRITEFILE(Prefsfile,Prefs) = 0 THEN DO
  349.         say "Save error!"
  350.       CALL TR_UNLOCKPROJECT(window)
  351.     RETURN
  352.     END
  353.  
  354.     CALL RXTR_READFILE(PrefsFile,Prefs)
  355.     Prefs2.0 = Prefs.0
  356.         DO i = 1 to Prefs2.0
  357.          Prefs2.i = Prefs.i
  358.     END
  359.       CALL TR_UNLOCKPROJECT(window)
  360. RETURN
  361.  
  362.  
  363. _Reset2Defaults:
  364.       CALL TR_LOCKPROJECT(window)
  365.     CALL _DefaultSettings
  366.     CALL _SetValues
  367.       CALL TR_UNLOCKPROJECT(window)
  368. RETURN
  369.  
  370. _LastSaved:
  371.       CALL TR_LOCKPROJECT(window)
  372.     DO i = 1 to Prefs2.0
  373.         Prefs.i = Prefs2.i
  374.     END
  375.     CALL _SetValues
  376.       CALL TR_UNLOCKPROJECT(window)
  377. RETURN
  378.  
  379.  
  380. _DefaultSettings:
  381.     Prefs.0 = 9 
  382.     Prefs.1 = 75    /* Quality */
  383.     Prefs.2 = 0    /* Smoothing */
  384.     Prefs.3 = 1    /* Scale */
  385.     Prefs.4 = 1    /* Methode */
  386.     Prefs.5 = 0    /* Block */
  387.     Prefs.6 = 0    /* Progressive */
  388.     Prefs.7 = 0    /* GrayScale */
  389.     Prefs.8 = 0    /* Force */
  390.     Prefs.9 = 0    /* Quiet */      
  391. RETURN
  392.  
  393. _GetValues:
  394.     Prefs.0 = 9
  395.     Prefs.1 = TR_GETATTRIBUTE(window,7,'TRAT_Value')    /* Quality */
  396.     Prefs.2 = TR_GETATTRIBUTE(window,8,'TRAT_Value')    /* Smoothing */
  397.     Prefs.3 = TR_GETATTRIBUTE(window,9,'TRAT_Value')    /* Scale */
  398.     Prefs.4 = TR_GETATTRIBUTE(window,14,'TRAT_Value')+1    /* Methode */
  399.     Prefs.5 = TR_GETATTRIBUTE(window,10,'TRAT_Value')    /* Block */
  400.     Prefs.6 = TR_GETATTRIBUTE(window,11,'TRAT_Value')    /* Progressive */
  401.     Prefs.7 = TR_GETATTRIBUTE(window,15,'TRAT_Value')    /* GrayScale */
  402.     Prefs.8 = TR_GETATTRIBUTE(window,17,'TRAT_Value')    /* Force */
  403.     Prefs.9 = TR_GETATTRIBUTE(window,12,'TRAT_Value')    /* Quiet */      
  404.     RETURN
  405.  
  406. _SetValues:
  407.     CALL TR_SETATTRIBUTE(window,7,'TRAT_Value',Prefs.1)    /* Quality */
  408.     CALL TR_SETATTRIBUTE(window,77,'TRAT_Text',Prefs.1"%")
  409.     CALL TR_SETATTRIBUTE(window,8,'TRAT_Value',Prefs.2)    /* Quality */
  410.     CALL TR_SETATTRIBUTE(window,88,'TRAT_Text',Prefs.2"%")
  411.     CALL TR_SETATTRIBUTE(window,9,'TRAT_Value',Prefs.3)    /* Scale */
  412.     CALL TR_SETATTRIBUTE(window,99,'TRAT_Text',"1:"Prefs.3)
  413.     CALL TR_SETATTRIBUTE(window,14,'TRAT_Value',Prefs.4-1)    /* Methode */
  414.     CALL TR_SETATTRIBUTE(window,10,'TRAT_Value',Prefs.5)    /* Block */
  415.     CALL TR_SETATTRIBUTE(window,11,'TRAT_Value',Prefs.6)    /* Progressive */
  416.     CALL TR_SETATTRIBUTE(window,15,'TRAT_Value',Prefs.7)    /* GrayScale */
  417.     CALL TR_SETATTRIBUTE(window,17,'TRAT_Value',Prefs.8)    /* Force */
  418.     CALL TR_SETATTRIBUTE(window,12,'TRAT_Value',Prefs.9)    /* Quiet */      
  419.     RETURN
  420.  
  421. /*
  422. ** Select datatypes
  423. */
  424. selectdatatypes:
  425.  
  426. datatypeswindowtags = ,
  427.    WindowID(2),
  428.    WindowPosition('TRWP_MOUSEPOINTER'),
  429.    WindowTitle('Select datatypes'),
  430.    WindowFlags('TRWF_NOESCCLOSE'),
  431.    PubScreenName(pubscreen),
  432.    'VertGroupA',
  433.       'Space',
  434.       'HorizGroupA',
  435.          'Space',
  436.          ListSS('datatypes',201,0,0),
  437.          'Space',
  438.       'EndGroup',
  439.       'Space',
  440.       'HorizSeparator',
  441.       'Space',
  442.       'HorizGroupA',
  443.          'Space',
  444.          ButtonR('_USE',298),
  445.          ButtonE('_CANCEL',299),
  446.          'Space',
  447.       'EndGroup',
  448.       'Space',
  449.    'EndGroup EndProject'
  450.  
  451.    datatypeswindow = TR_OPENPROJECT(app,datatypeswindowtags)
  452.  
  453.    IF datatypeswindow ~= '00000000'x THEN DO
  454.       CALL TR_LOCKPROJECT(window)
  455.  
  456.       quitdatatypeswindow = FALSE
  457.  
  458.       DO WHILE ~quitdatatypeswindow
  459.          CALL TR_WAIT(app,'')
  460.  
  461.          DO WHILE TR_HANDLEMSG(app,'event')
  462.             IF event.trm_class = 'TRMS_CLOSEWINDOW' THEN DO
  463.                quitdatatypeswindow = TRUE
  464.           selecteddatatypes = FALSE
  465.         END
  466.  
  467.             IF event.trm_class = 'TRMS_ACTION' THEN DO
  468.                IF event.trm_id = 298 THEN DO
  469.                   selecteddatatypes = datatypes.number
  470.                   quitdatatypeswindow = TRUE
  471.                END
  472.  
  473.                IF event.trm_id = 299 THEN DO
  474.                   quitdatatypeswindow = TRUE
  475.           selecteddatatypes = FALSE
  476.         END
  477.             END
  478.  
  479.             IF event.trm_class = 'TRMS_NEWVALUE' & event.trm_id = 201 THEN DO
  480.                number = event.trm_data+1
  481.  
  482.                IF BITAND(D2X(event.trm_qualifier),'0200'x) = '0200'x THEN DO
  483.                   selecteddatatypes = datatypes.number
  484.                   quitdatatypeswindow = TRUE
  485.                END
  486.             END
  487.          END
  488.       END
  489.  
  490.       CALL TR_CLOSEPROJECT(datatypeswindow)
  491.       CALL TR_UNLOCKPROJECT(window)
  492.    END
  493.  
  494.    RETURN(selecteddatatypes)
  495.  
  496. _InitAll:
  497. Args        = ""
  498. NL        = '0a'x
  499. TRUE        = 1
  500. FALSE        = 0
  501. HelpBool    = 0
  502. DCTMETHOD.0 = 3
  503. DCTMETHOD.1 = "ISLOW"
  504. DCTMETHOD.2 = "IFAST"
  505. DCTMETHOD.3 = "FLOAT"
  506.  
  507. PatternList = "#?(.jpg|.iff|.gif|.png)"    /* für Filerequester */
  508.  
  509. FileTypes.0 = 7
  510. FileTypes.1 = "%n (sourcename eg: %20n)"
  511. FileTypes.2 = "%nu (value of internal counter)"
  512. FileTypes.3 = "%w (width of the image.)"
  513. FileTypes.4 = "%h (height ...)"
  514. FileTypes.5 = "%d (depth  ...)"
  515. FileTypes.6 = "%sz (shortcut for %wx%hx%d)"
  516. FileTypes.7 = "%s (suffix without '.')"
  517.  
  518.    /*
  519.    ** Open libs
  520.    */
  521.  
  522.    IF ~SHOW('LIBRARIES','tritonrexx.library') THEN
  523.       IF ~ADDLIB('tritonrexx.library',10,-30,0) THEN
  524.          quit('Cannot open tritonrexx.library!',10)
  525.  
  526.    IF ~SHOW(LIBRARIES,'rexxtricks.library') THEN
  527.       IF ~ADDLIB('rexxtricks.library',9,-30,38) THEN
  528.          quit('Cannot open rexxtricks.library!',10)
  529.  
  530.    IF ~SHOW('LIBRARIES','rexxsupport.library') THEN
  531.       IF ~ADDLIB('rexxsupport.library',9,-30,0) THEN
  532.          quit('Cannot open rexxsupport.library!',10)
  533.  
  534.    /*
  535.    ** Set current dir
  536.    */
  537.  
  538.    PARSE SOURCE . . . script .
  539.    progdir = PATHPART(script)
  540.  
  541.    booll = LENGTH(progdir)
  542.    booli= LASTPOS(":",progdir)
  543.    boolh= LASTPOS("/",progdir)
  544.  
  545.   IF booli <= booll THEN progdir2=progdir||"/"
  546.   IF boolh == 0 THEN progdir2=progdir||"/"
  547.  
  548.    CALL PRAGMA('D',progdir)
  549.  
  550. /* Gibt es einen Parameter für den Bildschirm. Wenn nicht, dann wird
  551.    der Screen auf dem defaultPubScreen geöffnet. */
  552.  
  553. IF PubScreen == "" THEN
  554.    PubScreen = RXTR_GETDEFAULTPUBSCREEN()
  555. CALL RXTR_PUBSCREENTOFRONT(PubScreen)
  556.  
  557. bool = RXTR_GETDIR("sys:classes/DataTypes","#?.datatype",datatypes,'FILES','NAME')
  558. IF bool = 0 THEN datatypes.0 = 0
  559.         ELSE CALL RXTR_QSORT(datatypes,,"NOCASE",,)
  560.  
  561. IF EXISTS(PrefsFile) THEN DO
  562.             CALL RXTR_READFILE(PrefsFile,Prefs)
  563.             Prefs2.0 = Prefs.0
  564.             DO i = 1 to Prefs2.0
  565.              Prefs2.i = Prefs.i
  566.             END
  567.         END
  568.         ELSE CALL _DefaultSettings
  569.  
  570. RETURN
  571.  
  572. /*
  573. *** Fenster für die Dateivariable.
  574. */
  575. _FileTypes:
  576.  
  577. ende2 = 0
  578.  
  579. FileTypesTags = WindowID(3),
  580.         WindowPosition('TRWP_MOUSEPOINTER'),
  581.         WindowBackfillFB,
  582.         WindowTitle('variables & placeholders'),
  583.         WindowFlags('TRWF_NOCLOSEGADGET|TRWF_NOESCCLOSE'),
  584.         QuickHelpOn(HelpBool),
  585.          PubScreenName(Pubscreen),
  586.          'VertGroupA',
  587.           'Space',
  588.           'HorizGroupA',
  589.            'Space',
  590.             ListSel('FileTypes',301,0),
  591.             'Space',
  592.           'EndGroup',
  593.          'Space',
  594.          'HorizSeparator',
  595.          'Space',
  596.           'HorizGroupA',
  597.            'Space',
  598.            ButtonRE("Cancel",302),
  599.            'Space',
  600.          'EndGroup Space EndGroup EndGroup EndProject'
  601. FileTypesProject = TR_OPENPROJECT(app,FileTypestags)
  602.   IF FileTypesProject ~= '00000000'x THEN DO
  603.     CALL TR_LOCKPROJECT(window)
  604.  
  605.       DO WHILE ende2 ~= 1
  606.      DO WHILE TR_HANDLEMSG(app,'event3')
  607.  
  608.         IF event3.trm_class = 'TRMS_ACTION' THEN ende2 = 1 /* Cancel Gadget */
  609.  
  610.          IF event3.trm_class = 'TRMS_NEWVALUE' THEN DO
  611.         DirCheck = TR_GETATTRIBUTE(FileTypesProject,301,'TRAT_Value')+1
  612.         wert = TR_GETATTRIBUTE(FileTypesProject,301,'TRAT_Value')+1
  613.         IF wert <8 THEN lformattemplate=WORD(FileTypes.wert,1)
  614.                 ELSE lformattemplate = FileTypes.wert
  615.         oldTemplate=TR_GETATTRIBUTE(window,3,'TROB_STRING')
  616.         lformattemplate = WORD(lformattemplate,1)
  617.         lformattemplate = oldtemplate||lformattemplate
  618.         CALL TR_SETATTRIBUTE(window,3,'TROB_STRING',lformattemplate)
  619.         ende2 = 1
  620.              END
  621.          END
  622.       END
  623.   END
  624.  
  625.     CALL TR_UNLOCKPROJECT(window)
  626.     CALL TR_CLOSEPROJECT(FileTypesProject)
  627. RETURN
  628.  
  629. /*******************************************************************************
  630. ** Info über das Programm anzeigen
  631. *******************************************************************************/
  632. _About:
  633.    CALL TR_AUTOREQUEST(app,window,PubScreenName(PubScreen),
  634.          BeginRequester('About','TRWP_CENTERDISPLAY'),
  635.             'VertGroupA',
  636.                'Space',
  637.                CenteredText3(appname appversion '('||appdate||') (C) 1999 by Nils Görs <N.Goers@Art-Line.de>'),
  638.                'SpaceS',
  639.                CenteredText(appinfo),
  640.                'Space',
  641.                'HorizSeparator',
  642.                'SpaceS',
  643.                CenteredText3("This application uses:"),
  644.                'Space',
  645.                 CenteredText("'JpegTool' (C) by Stephan Rupprecht <stephan.rupprecht@gmx.de>"),
  646.                'SpaceS',
  647.                'HorizSeparator',
  648.                'Space',
  649.                CenteredText3('This program is using the 'Triton GUI creation system''),
  650.                'SpaceS',
  651.                CenteredText("'Triton' is (C) by Stefan Zeiger <s.zeiger@laren.rhein-main.de>"),
  652.                'Space',
  653.                'HorizSeparator',
  654.                'Space',
  655.                CenteredText3("This program also use 'tritonrexx.library'"),
  656.                'SpaceS',
  657.                'HorizGroupSC',
  658.                   'Space',
  659.                   TextN("'tritonrexx.library' is (C) by Jürgen Kohrmeyer <j_kohrmeyer@wilam.north.de>") 'TRAT_Flags TRTX_NOUNDERSCORE',
  660.                   'Space',
  661.                'EndGroup',
  662.                'Space',
  663.             'EndGroup',
  664.             'BeginRequesterGads',
  665.             CenteredButtonRE("Thanks",10000),
  666.          'EndRequester')
  667.    RETURN
  668.  
  669. /*******************************************************************************
  670. ** Routine, die bei einer Unterbrechung des Scripts aufgerufen wird
  671. *******************************************************************************/
  672.  
  673. break_c:
  674. failure:
  675. halt:
  676. ioerr:
  677. syntax:
  678.    SAY '+++ Fehler' rc 'in Zeile' sigl '-' ERRORTEXT(rc)
  679.    SAY SOURCELINE(sigl)
  680.  
  681.    IF app ~= '00000000'x THEN
  682.       CALL TR_DELETEAPP(app)
  683.  
  684.    EXIT(10)
  685. /*EOS*/
  686.